perm filename BB.DOC[206,LSP]2 blob sn#246021 filedate 1976-11-03 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BRIEF DOCUMENTATION FOR BLACKBOARD-LISP PRETTY PRINTING PROGRAM
C00004 00003	PRETTY PRINTING
C00007 00004	SPECIFYING FONTS AND UPPER/LOWER CASE
C00010 ENDMK
CāŠ—;
BRIEF DOCUMENTATION FOR BLACKBOARD-LISP PRETTY PRINTING PROGRAM

	This program  takes  regular S-expression  Lisp functions  as
source, converts  them to McCarthy's blackboard Lisp (approximately),
and pretty prints them.  If output  is to be on the XGP, it will  use
multiple fonts.  --Nick Littlestone

	The program runs in IL (ILISP). 

INITIALIZATION

	To read in the program and perform initialization, execute:

	(DSKIN (206 LSP) BBPP)

This  file contains  commands to  read the  Lap file  and to  perform
initialization. 

Loading the program works with 50 pages and 5000 words of binary
program space.  More space may be required, but try R IL 55.
PRETTY PRINTING

	to produce pretty printed output execute one of:

	(BBTTY u)
	(BBLPT u)
	(BBXGP u)
	(BBPUB u)

where the value of u is a list of atoms  which are names of the EXPRs
and  FEXPRs to be  printed.  (Other  properties of  the atoms besides
EXPR and FEXPR can also be printed--see below for how.)

	BBTTY and  BBLPT  produce output  formatted for  fixed  width
characters with  line lengths  appropriate for the  TTY and  the line
printer, respectively.   No font shift characters are included in the
output. 

	BBXGP produces output formatted for the XGP,  with XGP escape
characters for font shifts and indentation.  If the output is written
on a file, the file can be spooled with XSPOOL (You have to give  the
spooler a list of  the font names.  This  information is available to
the program.  The program should be changed to write this information
as the  first  line  of the  file,  in  a format  acceptable  to  the
spooler.)

	BBPUB produces output  which can be used as  PUB source text.
It contains PUB control characters for font shifts and indentation. 

	The output  produced by any of these functions can be written
on a file by using DSKOUT, e.g. 

	(DSKOUT FILNAM (BBXGP FUNS))

If the value of FUNS is a list of function  names, then each function
will be pretty  printed on the file FILNAM.   (See the description of
DSKOUT in the Lisp manual for more details.)


SPECIFYING THE PROPERTIES TO BE PRINTED

	BBPROPS is a  list of  the properties to  be pretty  printed,
currently  (EXPR  FEXPR).    It  can  be  changed  to  include  other
properties.   Any property other than VALUE  will be printed as if it
is a  function  body.    VALUE properties  will  be  printed  as Lisp
constants. 
SPECIFYING FONTS AND UPPER/LOWER CASE

	You only need to  do this if you want to  use something other
than the standard. 

	The  program  refers  symbolically to  4  fonts,  called VAR,
CONST, SYM, and BOLD.  For each of these the program must be told the
name of  the font file to  be used, and also  it must be given  a PUB
font select  character to use for that font.  If one wants to use the
same actual  font for  more than one  of these  symbolic fonts,  then
specify the  same PUB  font select character,  for both of  them, and
don't give a font file name for the second one. 

	To specify this  information, call  the fexpr  FONT once  for
each symbolic  font.  The  first argument is  the symbolic  name, the
second is the PUB font select character, and the rest of the argument
list is either a file name or a PPN follewed by a file name,  both in
the same form that the INPUT function expects, e.g. 

	(FONT SYM A (1 NXL) (FONT30 . XXX))
	(FONT BOLD B BASB30)

The default PPN is (XGP SYS) and the default extension is .FNT. 

	VAR is used to print variables. 
	CONST is used to print S-expression constants. 
	SYM is used to print symbols (e.g. +,*). 
	BOLD is used to print reserved words. 

	See  the  file BBPP[206,NXL]  for  the  current fonts  used.  
Normally   the   information   is   read   from   that   file  during
initialization, so you need not specify it. 

	Only one  call to  FONT can be  made for  each symbolic  font
unless CLEARFONTS is executed  to clear the specifications for all of
the fonts. 

	When the FONT  function is  called, the  specified font  file
will be read to find out the character widths.